导入excel及需要的jar包看之前链接:https://blog.csdn.net/sipengfei_/article/details/88184964
先说一下导出的时候怎么给单元格设置超链接,有两种方式可以设置超链接
//第一种
String url = "https://www.baidu.com/";
cell.setCellFormula("HYPERLINK(https://www.baidu.com/,\"查看图片\"");
cell.setCellFormula("HYPERLINK(\""+url+"\",\"查看图片\"");
//第二种
HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL);
link.setAddress("https://www.baidu.com/");
cell.setHyperlink(link);// 设置超链接
HSSFHyperlink 也可以换成 XSSFHyperlink,主要还是看你导出时是以哪种格式导出的
导入excel时获取单元格超链接,导出时以什么方式设置的超链接,导入时就以什么方式获取超链接
//第一种
//先用行对象获取单元格对象,然后再把超链接截取出来
String forMula = cell.getCellFormula();
String param = forMula.substring(forMula.indexOf("http"), forMula.indexOf(",") - 1);//图片的url地址
//第二种
Hyperlink link = cell.getHyperlink();
String param = link.getAddress();
导出Excel的方法:
list参数是我要导出的数据,我导出来的是.xls的文件,也可以导出.xlsx文件,但是要将所有的HSSF开头的对象改为XSSF,文件后缀名改为.xlsx
/**
*
* @param request
* @param response
* @param label 列名
* @param list 数据
* @param fileName 文件名称
*/
public static void downLoadExcel(HttpServletRequest request, HttpServletResponse response, List<String> label, List<Map> list, String fileName){
HSSFWorkbook workbook = null;
OutputStream fos = null;
try {
workbook = new HSSFWorkbook();
response.setContentType("octets/stream");
//解决中文名乱码
response.setContentType("application/octet-stream;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename="
+ new String(fileName.getBytes(),"iso-8859-1") + ".xls");
fos = response.getOutputStream();
HSSFSheet sheet = workbook.createSheet();//创建sheet页
// 在索引0的位置创建行(最顶端的行)
HSSFRow row1 = sheet.createRow((short) 0);
HSSFCell cell1 = null;
int columnNum = label.size();
// 将列头设置到sheet的单元格中
for (int n = 0; n < label.size(); n++) {
// 创建列头对应个数的单元格
cell1 = row1.createCell(n);
// // 设置列头单元格的数据类型
// cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
// 设置列头单元格的值
cell1.setCellValue(label.get(n));
}
for (int i = 0; i < list.size(); i++) {
Map<String, String> map = list.get(i);
HSSFRow row = sheet.createRow(i + 1);
Object[] values = map.values().toArray();
for (int j = 0; j < values.length; j++) {
HSSFCell cell = row.createCell(j, HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(values[j].toString());
//单元格设置超链接参照上面设置超链接代码
//..
}
}
// 将workbook对象输出到文件test.xls
workbook.write(fos);
if (workbook != null) {
workbook.write(response.getOutputStream());
}
} catch (Exception e) {
System.out.println("数据导出失败");
} finally {
try {
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}